What is @types/sinon?
The @types/sinon package provides TypeScript type definitions for Sinon.js, a standalone test spies, stubs, and mocks for JavaScript. It enables developers using TypeScript to get compile-time type checking and IntelliSense support when working with Sinon.js, ensuring that they use the Sinon.js API correctly.
What are @types/sinon's main functionalities?
Spies
Spies are functions that record arguments, return value, the value of this, and exception thrown (if any) for all its calls. Useful for testing your functions are called correctly.
const spy = sinon.spy();
spy('Hello', 'World');
console.log(spy.firstCall.args); // Logs: ['Hello', 'World']
Stubs
Stubs are like spies, but they can replace the target function. They can be used to control a method's behavior without affecting the rest of your code's execution.
const stub = sinon.stub().returns('Hello World');
console.log(stub()); // Logs: 'Hello World'
Mocks
Mocks combine spies and stubs. They are fake methods (like stubs) with pre-programmed behavior (like spies) as well as pre-programmed expectations. A mock will fail your test if it is not used as expected.
const myAPI = { method: function () {} };
const mock = sinon.mock(myAPI);
mock.expects('method').once().returns('Hello World');
myAPI.method(); // Satisfies the expectation
mock.verify();
Other packages similar to @types/sinon
jest
Jest is a delightful JavaScript Testing Framework with a focus on simplicity. It works out of the box for any React project and supports features like Mock Functions similar to Sinon but integrated into its test runner. Jest's mocking capabilities are built-in, which means you don't need to install additional packages for mocking.
chai
Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework. It's similar to Sinon in that it's often used in testing environments, but Chai focuses more on assertions whereas Sinon provides tools for spies, stubs, and mocks. Chai can be used alongside Sinon for a more complete testing setup.
jasmine
Jasmine is a behavior-driven development framework for testing JavaScript code. It does not require a DOM, and it has a clean, obvious syntax so that you can easily write tests. Jasmine comes with spies and support for stubs and mocks, similar to Sinon, but it is a full testing framework rather than just a mocking library.
Installation
npm install --save @types/sinon
Summary
This package contains type definitions for Sinon (https://sinonjs.org).
Details
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/sinon.
Additional Details
- Last updated: Tue, 25 Feb 2020 18:51:13 GMT
- Dependencies: none
- Global values:
sinon
Credits
These definitions were written by William Sears, Jonathan Little, Lukas Spieß, Nico Jansen, James Garbutt, Josh Goldberg, Greg Jednaszewski, John Wood, Alec Flett, Simon Schick, and Roey Berman.